from django import forms
from content import widgets

from pytils.translit import slugify

from content import models
from content import widgets


class AddingVerbForm(forms.ModelForm):

    """ Форма для добавления глагола """

    photo = forms.ImageField(required=False, label='Фотография', widget=widgets.UploadFiles)

    class Meta:
        model = models.Verb
        fields = ['word', 'translate', 'simple_past', 'past_participle', 'photo']


class AddWordForm(forms.ModelForm):

    """ Форма для добавления какого-то слово, отличного от глагола """

    note = forms.CharField(required=False, label='Дополнительно', widget=widgets.Note)
    photo = forms.ImageField(required=False, label='Фотография', widget=widgets.UploadFiles)

    class Meta:
        model = models.Word
        fields = ['word', 'translate', 'photo']


class UpdateWordForm(AddWordForm):

    """ Форма для обновления какого-то слова, отличного от глагола """

    note = None


class AddPhraseForm(forms.ModelForm):

    """ Форма для добавления какой-то фразы """

    GROUP_SELECTION = []
    for group in models.Group.objects.filter(content='phrase'):
        name = group.name
        GROUP_SELECTION.append((slugify(name), name))

    group = forms.ChoiceField(label='Группа', choices=GROUP_SELECTION, widget=forms.Select)
    note = forms.CharField(required=False, label='Примечание', widget=widgets.Note)
    photo = forms.ImageField(required=False, label='Фотография', widget=widgets.UploadFiles)

    class Meta:
        model = models.Phrase
        fields = ['phrase', 'translation', 'note', 'photo']


class AddAdditionallyInformationForm(forms.ModelForm):

    """ Форма для добавления дополнительной информации """

    note = forms.CharField(required=False, widget=forms.Textarea)

    class Meta:
        model = models.Additionaly
        fields = ('note', 'photo')


class AddGroupForm(forms.ModelForm):

    """ Форма для добавления группы """

    class Meta:
        model = models.Group
        fields = ('name',)


class AddRuleForm(forms.ModelForm):

    """ Форма для добавления правила """

    class Meta:
        model = models.Rule
        fields = ('title', 'description', 'group')


class AddArticleForm(forms.ModelForm):

    """ Форма для добавления статьи """

    class Meta:
        model = models.Article
        fields = ('title', 'description', 'group')


class AddImageForm(forms.ModelForm):

    """ Форма для добавления изображений """

    class Meta:
        model = models.Image
        fields = ('photo', 'title', 'description', 'group')
